package com.cyys.common.services;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cyys.common.model.BaseBean;
import com.cyys.common.ql.AjaxJson;
import com.cyys.common.utils.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.Arrays;
import java.util.List;

/**
 * 无权限判断的service
 * @param <D>
 * @param <T>
 * @Deprecated 使用CyysBaseService进行业务类，加入了权限判断
 */

@Deprecated
@Transactional(readOnly = true)
public abstract class RealizeService<D extends BaseMapper<T>, T extends BaseBean> extends BaseService {
	/**
	 * 持久层对象
	 */
	@Autowired
	protected D dao;

	/**
	 * 保存对象，
	 * 
	 * @param entity
	 * @return  AjaxJson
	 */
	@Transactional(readOnly = false)
	public AjaxJson save(T entity) {
		dao.insert(entity);
		return success("保存成功");
	}

	/**
	 * 修改对象
	 * 
	 * @param entity
	 */
	@Transactional(readOnly = false)
	public AjaxJson update(T entity) {
		dao.updateById(entity);
		return success("更新成功");
	}

	/**
	 * 获取单个对象
	 * 
	 * @param id
	 *            null,查询所有数据 0:查询未删除的数据,1:查询已删除的数据
	 * @return
	 */
	public T getById(String id) {
		return dao.selectById(id);
	}

	/**
	 * 根据条件查询数据
	 * @param queryWrapper
	 *            null,查询所有数据 0:查询未删除的数据,1:查询已删除的数据
	 * @return
	 */
	public IPage<T> list(Page page, QueryWrapper<T> queryWrapper, Boolean orderByDate) {
		if(orderByDate != null && orderByDate)
			queryWrapper.orderByDesc("date_create");
		return dao.selectPage(page, queryWrapper);
	}
//
//	/**
//	 * 根据条件查询数据
//	 * @param queryWrapper
//	 *            null,查询所有数据 0:查询未删除的数据,1:查询已删除的数据
//	 * @return
//	 */
//	public IPage<T> list(Page page, QueryWrapper<T> queryWrapper) {
//		return dao.selectPage(page, queryWrapper);
//	}


	/**
	 * 查询所有数据
	 * 
	 * null,查询所有数据 0:查询未删除的数据,1:查询已删除的数据
	 * @return
	 * @
	 */
	public List<T> listAll(Wrapper<T> queryWrapper) {
		return dao.selectList(queryWrapper);
	}
	
	

	/**
	 * 根据编号删除用户
	 * 
	 * @param id
	 */
	@Transactional(readOnly = false)
	public AjaxJson deleteById(String id) {
		if (StringUtil.isBlank(id)){
			return error("删除时ID不能为空");
		}else{
			dao.deleteById(id);
			return success("删除成功");
		}
	}

	/**
	 * 根据编号数组删除用户
	 * 
	 * @param ids
	 */
	@Transactional(readOnly = false)
	public AjaxJson deleteBatchIds(String ids) {
		if (StringUtil.isBlank(ids)){
			return error("删除时ID不能为空");
		}else{
			String[] idsInt = ids.split(",");
			dao.deleteBatchIds(Arrays.asList(idsInt));
			return error("删除成功");
		}
	}
}
